When video output from a computer is provided to multiple display panels, multiple video streams are created between one or more graphics display boards and the display panels. If the multiple panels are the same, the properties of the generated video streams that supply them can be the same (resolution, refresh rate, etc.). However, if one wishes to provide outputs to panels that are different from each other, the video streams are often different. Furthermore, different interfaces and protocols can be used for the different display panels which also cause differences in the video streams. For example, if one display is being supplied data using HDMI, one display is being supplied using DVI and another display is being supplied using DisplayPort, the hardware driving the outputs to these displays may need to use different hardware blocks to set up the various video streams. Similarly, two streams of the same protocol that are being sent to two different displays that support different resolutions also require divergent streams. Also, two streams of different protocols that are being sent to similar displays (or both to a single display) also require different streams. By way of further example, AMD Eyefinity technology supports up to six simultaneous displays off of a single graphics card. Eyefinity supports display outputs of DVI, DisplayPort, miniDisplayPort, HDMI, and VGA.
The differences in the video streams result in a difference in bit rates of the data being output to the panels. This difference in bit rates provides a lack of synchronicity. While the difference may be small, as the displays continue to run, the small differences begin to accumulate until the displayed images are out of synchronization by such a margin that it becomes noticeable. Specifically, the lack of synchronicity presents problems for users who can see both streams (such as in multi-screen or single screen 3D applications) or where multiple users need to perceive the video simultaneously (such as when there is a common audio stream projected to the viewers of the multiple screens).
When there is a lack of synchronization between video streams, clock pulses that drive the video streams are each firing at different times. Accordingly, other processes that look to operate on the streams or use the stream data (such as memory controllers) need to run relatively frequently to be sure and pick up current data. By way of example, video streams contain blank and active regions. The active regions are the portions that need to be fetched. If streams are not synchronized, then blank regions of one stream can occur while an active region is present for another stream. Thus, clock speeds must be maintained at all times in that an active region can be present at any time.
If the streams are synchronized, then other processes can run at a similar clock pulse and know that the process is aligned with the stream data. In this manner, the other processes can use a lower clock speed, thereby saving power. Again using the above example, when streams are synchronized, it can be determined when active regions are present in the streams and when blank regions are present in the streams. Furthermore, the active and blank regions for the streams are likewise synchronized. Thus, during blank regions, a lower clock speed can be applied.
Synchronization of different streams is currently possible through the use of additional hardware modules. Such modules include the S400 synchronization module and the NVIDIA® Quadro® G-Synch. However, these synchronization modules are provided for synchronizing signals from different stream sources (GPU's, etc).
Accordingly, there exists a need for a device and method to provide different video streams from a common source that operate so as to appear synchronous.